Most of the personal computer systems in use today, throughout the world, consist of little more than a central, arithmetic instruction processing unit, its associated main memory, basic input/output (I/O) control devices and a structured, architectured bus, provided on the computer's primary circuit board, onto which "peripheral" devices may be connected in order to make the computer system fully functional. Some of the more popular, and indeed necessary, of these expansion devices include sound cards, enhanced graphics adapters for video support, and I/O interface adapters which provide the capability for connecting peripheral data storage devices such as disk drives, CD-ROM drives, DAT tape drives, and the like, to the computer system. Although peripheral data storage devices are available in several architectures, the most prevalent peripheral devices operate in accordance with either an architecture termed IDE, an acronym for integrated device electronics, or an architecture termed SCSI, an acronym for small computer systems interface, and communicate with the computer system over a bus architecture termed either the IDE bus or the SCSI bus. The central instruction processing unit (CPU) executes the instructions of a particular application program, which, along with its attendant files and data, resides in main memory at the time of program execution. Accordingly, before an application program can be run, it must be loaded into main memory from a mass storage device, such as a disk drive. The data to be processed by the program is either accessed from the mass storage device or provided by an input device such as a keyboard. In well known fashion, the CPU accesses main memory at least once during the performance of each program step in order to read the corresponding machine instructions for that step. Indeed, several CPU access calls are usually required in order to read and write data.
Accordingly, main memory is very tightly coupled to the CPU by means of a main system bus, providing simplified and, above all, fast information transfer between memory and the CPU.
In contrast, mass storage devices, and other I/O devices such as keyboards and the like, are much further removed from the CPU and communication between such devices and the CPU is consequently slower and more complicated. Communication between the CPU and peripheral devices is accommodated over an interface such as IDE or SCSI, on the other end of which is an interface controller, which in turn communicates with the CPU in main memory.
Even though the configuration and architecture of a peripheral bus plays an important role in determining the I/O performance of a data storage device, the configuration and operational parameters of the device itself are more immediately important in determining such performance characteristics, particularly with regard to speed of the I/O (reads, writes, and seeks). The basic physical design of disk drives and the organization of data on the storage medium are pre-set during the disk drive manufacturing process. Also pre-set at the factory are the various control parameters which control the manner in which data is moved on and off of the storage medium, data block size, cache controlling, and the various transfer lengths of data being moved through the disk drive control circuitry between the data storage device and CPU. Not only do these factory pre-set parameters control the I/O performance of a typical disk drive, they have the effect of changing the drive's I/O performance characteristics depending on the size of a particular data transfer being performed between the drive and CPU.
For example, when the computer system is running a typical word processing application, a typical data I/O transfer size is in the 2 k to 4 k range, meaning that a relatively small amount of information is being communicated between a disk drive and the CPU during a typical I/O call. In contrast, when the computer system is executing a 3-D graphics, digital video editing, digital video capturing, or desktop publishing application, a typical I/O request will involve communicating data between the drive and CPU in 64 k to multi-megabyte transfer request sizes. If the disk drive I/O performance is factory pre-set to median values that allow an acceptable data transfer rate across a range of transfer sizes, it will be evident that optimum performance may not be achieved in any given band of transfer sizes, or indeed optimum performance may not be achieved at any data transfer size.
More recently, advances in computer hardware and software have strained the capabilities of disk drives to provide huge quantities of data on demand, in a timely manner. Full-motion video applications, complete with accompanying sound, pre-press data and video processing for large-scale publishing applications, and indeed Internet access, have all combined to present an all but insolvable problem to a disk drive with factory pre-set (pre-tuned) performance parameters. In particular, multi media and full motion video requires multi-megabyte sized data transfers between a storage device and the CPU without substantial loss of data. Under these conditions, a disk drive must be able to respond to a data read or write, no matter what the transfer size, as fast as technically possible.
One means by which present day systems address this problem is by storing information in a Redundant Array of Independent Drives (RAID) by using one of the various RAID protocols, at least data reads can be more quickly performed, because various portions of a particular file may be "striped" across two, or more, drives, each of which is read separately and the data combined in downstream processing circuitry.
While RAID offers some relief to the problems of providing fast data throughput, the RAID solution is not available for computer systems with single disk drives, or multiple disk drives not configured as an array. Furthermore, even in a RAID environment, the data throughput characteristics of each individual disk drive comprising the array is limited by its factory pre-set performance parameters. Thus, even when configured as an array, disk drive data transfer performance is not optimized for particular data transfer sizes, resulting in less than optimal overall data transfer times.
Because data transfer speed has become the hallmark of efficient computer operation, there is a need for a system which allows the individual performance characteristics of a disk drive to be optimized (tuned) to accommodate maximum data throughput at particular bands of data transfer sizes. Such a system should interactively determine a particular application's data throughput requirements, and dynamically adjust a drive's performance parameters in run-time mode. In addition, such a system should be able to evaluate the data throughput requirements of a particular application, log these requirements in a parameter set file, and provide an initial pre-tuned parameter set to a disk drive upon a corresponding application's being invoked, to further speed the dynamic, run-time parametric optimization.